package com.fuershiye.woman.monitor.constants;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

public enum Massage {


	//三位数系统级提示
	SUCCESS(200, "OK"),
	FAIL(500, "操作失败，请重试"),
	
	//1000  -  19999 应用级错误
	ERROR_PARAMETER(1001, "参数错误!"),
	ERROR_YEAR(1002, "年份错误!"),
	
	
	//2000 -- 2999 指标相关的错误
	INDICATOR_IS_NULL(2001, "指标不存在!"),
	INDICATOR_ADD(2002, "指标添加失败!"),
	INDICATOR_EXIST(2003, "指标已存在!"),
	INDICATOR_EXIST_CODE(2004, "编码已存在!"),
	INDICATOR_UPDATE(2005, "指标保存失败!"),
	INDICATOR_LEVEL(2006, "指标等级不存在!"),
	INDICATOR_TYPE_IS_NULL(2007, "指标类型不存在!"),
	
	//3000 -- 3999 部门相关的错误
	DEPART_IS_NULL(3001, "部门不存在!"),
	AREA_IS_NULL(3002, "地域不存在!"),
	DEPART_TYPE_IS_NULL(3003, "部门类型不存在!"),
	DEPART_INDICATOR_IS_EXIT(3004, "部门指标已存在!"),
	
	//4000 -- 4999 上报数据相关的错误
	REPORT_IS_NULL(4001, "数据不存在!"),
	REPORT_FORM_DEPART_NULL(4002, "该部门本年份上报数据不存在!"),
	REPORT_FINISHED(4003, "该部门本年份上报已完成!"),
	REPORT_CANCEL(4004, "该部门本年份上报未完成,不可撤销!"),
	REPORT_CONFIRM(4005, "该部门本年份未申请撤销!"),
	REPORT_MODIFY(4006, "已有数据上报,不可编辑!"),
	REPORT_EXIST(4007, "该部门本年度的数据已存在,不可重复添加!"),
	REPORT_VALUE(4008, "数据格式不对!"),
	REPORT_CHECK(4009, "上报审核中!"),
	REPORT_REMARK(4010, "备注错误!"),
	REPORT_TYPE(4011, "上报数据类型有误!"),

	
	//5000 -- 5999 用户相关的错误
	USER_IS_NULL(5001, "用户不存在!"),
	
	//6000 -- 6999 通知公告，文章等
	CONTENT_IS_NULL(6001, "通知或公告不存在!"),
	CONTENT_INFO_IS_NULL(6002, "文章不存在!"),

	//7000 -- 7999 报表相关
	FORMS_IS_NULL(7001, "报表不存在!"),
	FORMS_DEPART_IS_NULL(7002, "部门报表不存在!"),

	//8000 -- 8999 报表相关
	FILE_IS_NULL(8001, "文件不存在!"),
	FILE_IS_TYPE(8002, "文件格式不正确!"),
	IMPORT_IS_ERROR(8003, "导入失败!"),
	FILE_SHEET_IS_NULL(8004, "文件sheet页不存在!"),


	;

	private int status;

	private String msg;

	private Massage(int status, String msg) {
		this.status = status;
		this.msg = msg;
	}

	public int getStatus() {
		return status;
	}

	public String getMsg() {
		return msg;
	}

	private static final Map<Integer, Massage> lookupByStatus = new HashMap<Integer, Massage>();

	static {
		for (final Massage p : EnumSet.allOf(Massage.class)) {
			lookupByStatus.put(p.getStatus(), p);
		}
	}

	public static Massage getMassage(int status) {
		return lookupByStatus.get(status);
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
	}

}
